package com.ruoyi.business.service.impl.sms;

import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.business.service.ISmsService;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.redis.RedisUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.time.Duration;

/**
 * 测试登录短信服务层 服务层
 *
 * @author Fgxia LD 99
 */
@Slf4j
@Service("smsLoginTestService")
@RequiredArgsConstructor
public class SmsLoginTestServiceImpl implements ISmsService {

    /**
     * 过期时间（分钟）
     */
    private static final int EXPIRE_TIME = 60 * 10;

    /**
     * 发送验证码短信
     *
     * @param phone 手机号
     * @param code  验证码，可不传。不传则自动生成
     */
    @Override
    public Boolean send(String phone, String code) {
        if (StrUtil.isEmpty(phone) && !Validator.isMobile(phone)) {
            throw new ServiceException("手机号不能为空且必须符合格式要求");
        }
        if (StrUtil.isEmpty(code)) {
            // 生成验证码
            code = "123456";
        }
        RedisUtils.setCacheObject(CacheConstants.CAPTCHA_CODE_KEY + phone, code, Duration.ofSeconds(EXPIRE_TIME));
        return true;
    }
}
